/**
 * Created by Administrator on 2016/3/15.
 * 该包依赖包
 *      jQuery
 *      artTemplate
 *      jQuery-cookie
 *      json2
 */

//$(function(){
var isLog = false;
/**
 * 获取数据
 * @param url       数据来源
 * @param opation   传参
 * @param htmlurl   html数据显示地址
 * @param scripturl script模板地址
 * @param cookies   是否要进行cookie
 * @param callback  回调函数
 * @param isLog     是否打印日志(用于数据调试)
 */
function geetdata(url, opation, htmlurl, scripturl, cookies, isLog, callback) {
    printLog("geetdata", null, null, isLog);
    $.getJSON(url, opation, function (json) {
        printLog("geetdata", "getjson", json, isLog);
        view(json, htmlurl, scripturl, isLog);
        if (cookies != null && cookies != '') {
            //alert(opation);
            opation.pageCount = json.data.pageCount;
            opation.total = json.data.total;
            saveOpation(cookies, JSON.stringify(opation));
        }

        if (callback) {
            callback();
        }
    })
}

/**
 * 页面显示数据
 * 目的：样式和数据分离
 * @param json      数据格式为json数据
 * @param htmlurl   html地址
 * @param scripturl script脚本地址
 */
function view(json, htmlurl, scripturl, isLog) {
    var $varietyContent = $(htmlurl),
        varietyHtml = template(scripturl, json);
    $varietyContent.html(varietyHtml);
    printLog("view", null, "页面数据渲染", isLog);
}

/**
 * 利用cookie保存翻页数据
 * @param name  cookie名称
 * @param value 分页数据
 */
function saveOpation(name, value) {
    $.cookie(name, value, {path: "/"});
    //$.cookie(name,value,{path:'/'});
    printLog("saveOpation", null, "翻页数据以保存" + value, isLog);
}
/**
 * 首页
 */
function fristPage(name, url, htmlurl, scripturl, cookies, isLog, callback) {
    var value = $.cookie(name);
    var opation = JSON.parse(value);
    opation.pageNo = 1;
    geetdata(url, opation, htmlurl, scripturl, name, isLog, callback);
    printLog("fristPage", null, opation, isLog);
}
/**
 * 上一页
 * @param name
 * @param url
 * @param htmlurl
 * @param scripturl
 * @param cookies
 * @param isLog
 */
function pre(name, url, htmlurl, scripturl, cookies, isLog, callback) {
    var value = $.cookie(name);
    var opation = JSON.parse(value);
    if (opation.pageNo > 1) {
        opation.pageNo = opation.pageNo - 1;
    }
    geetdata(url, opation, htmlurl, scripturl, name, isLog, callback);

    printLog("pre", null, "opation" + opation, isLog)
}

/**
 * 跳到n页
 */
function toPage(pageNo, name, url, htmlurl, scripturl, cookies, isLog, callback) {
    var value = $.cookie(name);
    var opation = JSON.parse(value);
    opation.pageNo = pageNo;

    geetdata(url, opation, htmlurl, scripturl, name, isLog, callback);
    printLog("toPage", null, opation, isLog);
}

/**
 * 下一页
 */
function next(name, url, htmlurl, scripturl, cookies, isLog, callback) {
    var value = $.cookie(name);
    var opation = JSON.parse(value);
    if (opation.total % opation.pageSize == 0) {
        opation.pageCount = opation.total / opation.pageSize;
    }
    if (opation.pageNo < opation.pageCount) {
        opation.pageNo = opation.pageNo + 1;
    }

    geetdata(url, opation, htmlurl, scripturl, name, isLog, callback);
    printLog("next", null, opation, isLog);
}

/**
 * 最后一页
 */
function lastPage(name, url, htmlurl, scripturl, cookies, isLog, callback) {
    var value = $.cookie(name);
    var opation = JSON.parse(value);
    opation.pageNo = opation.pageCount;
    geetdata(url, opation, htmlurl, scripturl, name, isLog, callback);
    printLog("lastPage", null, opation, isLog);
}

/**
 * 获取图片地址
 */
function geetImg(imgUrl, n) {
    if (imgUrl == '') {
        return null;
    }
    if (n == '') {
        return imgUrl;
    }
    var imgurls = new Array();
    imgurls = imgUrl.split(',');
    if (n > imgurls.length + 1) {
        alert('传递的参数有误,图片取数大于图片个数!\n注意：取数索引从1开始');
    } else {
        return imgurls[n - 1];
    }
    return '';
}

/**
 * 打开新页面
 * @param url 网页地址
 * @param isNew 是否是新窗口打开
 */
function openUrl(url, isNew) {
    if (isNew) {
        window.open(url);
    } else {
        window.location.href = url;
    }
    printLog("openUrl", null, url, isLog);
}

/**
 * 获取参数值
 * @returns {Object}    返回参数对象
 * 例如/index.html?id=123     用法是geetOpation()['id']
 */
function geetOpation() {
    var url = location.search;
    var Request = new Object();
    if (url.indexOf("?") != -1) {
        var str = url.substr(1);
        strs = str.split("&");
        for (var i = 0; i < strs.length; i++) {
            Request[strs[i].split("=")[0]] = unescape(strs[i].split("=")[1]);
        }
    }
    printLog("geetOpation", null, Request, isLog);
    return Request;

}

/**
 *  获取请求头里面参数的值
 * @param name      参数名
 * @returns {*}     对应的值
 *      例如：geetRequestValueByParameter('id');
 */
function geetRequestValueByParameter(name) {
    var opation = geetOpation();
    printLog("geetRequestValueByParameter", null, opation[name], isLog)
    return opation[name];
}
/**
 * 打印日志模块
 * @param funName   函数名
 * @param block     模块名
 * @param result    执行结果
 * @param isLog     是否打印
 *      例如printLog(geetdata,getjson,null)   // 在geetdata中。。。
 */
function printLog(funName, block, result, isLog) {
    if (isLog) {
        var string = '';
        if (funName) {
            string += ('在' + funName + '函数中');
        }
        if (block) {
            string += ('在' + block + '函数中');
        }
        if (result) {
            string += ('执行结果为' + block + '');
        }
//            console.info(string);
        if (isLog) {
            console.log("执行结果详情")
            console.info(result);
        }

    }

}
/**
 * 字数限制函数（用于截断文本）
 * @param content   需截断的原始文本
 * @param n         要截断的个数
 * @returns {*}     截断结果...
 */
function wordLimit(content, n) {
    if (content == '') {
        return null;
    } else if (content.length < n) {
        return content;
    } else {
        return content.substring(0, n) + "...";
    }
}

(function () {    /* 添加时间原型，用于格式化代码 */
    Date.prototype.format = function (format) {
        var o = {
            "M+": this.getMonth() + 1, //month
            "d+": this.getDate(), //day
            "h+": this.getHours(), //hour
            "m+": this.getMinutes(), //minute
            "s+": this.getSeconds(), //second
            "q+": Math.floor((this.getMonth() + 3) / 3), //quarter
            "S": this.getMilliseconds() //millisecond
        }
        if (/(y+)/.test(format)) format = format.replace(RegExp.$1,
            (this.getFullYear() + "").substr(4 - RegExp.$1.length));
        for (var k in o)if (new RegExp("(" + k + ")").test(format))
            format = format.replace(RegExp.$1,
                RegExp.$1.length == 1 ? o[k] :
                    ("00" + o[k]).substr(("" + o[k]).length));
        return format;
    }


})();
var byTime = [365 * 24 * 60 * 60 * 1000, 24 * 60 * 60 * 1000, 60 * 60 * 1000, 60 * 1000, 1000];
var unit = ["年", "天", "小时", "分钟", "秒钟"];

function geetDay(atime) {/* 几天前 */

    var ct = new Date().getTime() - new Date(atime).getTime();
    if (ct < 0) {
        return "瞎糊闹！"
    }

    var sb = [];
    for (var i = 0; i < byTime.length; i++) {
        if (ct < byTime[i]) {
            continue;
        }
        var temp = Math.floor(ct / byTime[i]);
        ct = ct % byTime[i];
        if (temp > 0) {
            sb.push(temp + unit[i]);
        }


        /*一下控制最多输出几个时间单位：
         一个时间单位如：N分钟前
         两个时间单位如：M分钟N秒前
         三个时间单位如：M年N分钟X秒前
         以此类推
         */
        if (sb.length >= 1) {
            break;
        }
    }
    return (sb.join("") + "前");
}

/**
 * 格式化时间代码
 * @param name  模板名字
 * @param date  时间字符串
 *      例如 2016-03-16
 */
function getdateByString(date, name) {
    if (isFirefox = navigator.userAgent.indexOf("Firefox") > 0) {
        date = date.replace(' ', 'T');
    }
    if ((navigator.userAgent.indexOf('MSIE') >= 0)
        && (navigator.userAgent.indexOf('Opera') < 0)) {
        date = date.replace(' ', 'T');
    }
    if (date.indexOf('-') == -1) {
        return date;
    }
    var temp = new Date(date);
    return temp.format(name);
}
/**
 * 调用示例：
 * 1.截断文字内容
 *     例如：{{value.summary | wordLimit:'30'}}
 */
template.helper("wordLimit", wordLimit);

/**
 * 调用示例：
 * 2.改变图片选取位置
 *      例如{{value.imgUrl | geetImgByIndex:'1'}}"
 */
template.helper("geetImgByIndex", geetImg);

/**
 * 调用示例：
 * 3.改变时间格式
 *      例如{{value.Create | getDate:'yyyy-MM-dd'}}"
 *          {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 */
template.helper("getDate", getdateByString);
/**
 * 调用示例：
 * 4.改变时间显示
 *      例如{{value.Create | getDate:'yyyy-MM-dd'}}"
 *          {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 *      例如 {{value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"   {value.Create | getDate:'yyyy-MM-dd hh:mm:ss'}}"
 */
template.helper("geetDay", geetDay);

//});
